#pragma once

#include "viml/value.h"
#include <vector>

namespace viml {

// 内建Dict函数声明

/**
 * keys(dict) - 返回字典中所有键组成的列表
 */
Value keys_builtin(const std::vector<Value>& args);

/**
 * values(dict) - 返回字典中所有值组成的列表
 */
Value values_builtin(const std::vector<Value>& args);

/**
 * items(dict) - 返回字典中所有键值对组成的列表，每个元素是[key, value]
 */
Value items_builtin(const std::vector<Value>& args);

/**
 * has_key(dict, key) - 判断字典是否包含某个键
 */
Value has_key_builtin(const std::vector<Value>& args);

/**
 * len(dict) - 返回字典中键值对的数量
 */
Value len_dict_builtin(const std::vector<Value>& args);

/**
 * get(dict, key, [default]) - 安全获取键对应的值，支持默认值
 */
Value get_builtin(const std::vector<Value>& args);

/**
 * remove(dict, key) - 删除字典中的键，并返回对应的值
 */
Value remove_dict_builtin(const std::vector<Value>& args);

/**
 * copy(dict) - 浅拷贝字典
 */
Value copy_dict_builtin(const std::vector<Value>& args);

/**
 * deepcopy(dict) - 深拷贝字典
 */
Value deepcopy_dict_builtin(const std::vector<Value>& args);

} // namespace viml